If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.
Great - I updated the instructions to give people without 8.39.4 a way to do it. If I have time, I'll whip up a small autopatching program to do it automatically.
UPDATE: Looks like a problem with permissions on /tmp. The X server starts fine, but gdm keeps cycling it because it couldn't start and ends up locking it up. After fixing the permissions, everything starts again.
pretty slick knowing to nop out a call to atiddxSave64BitBAR
/me wonders how long that took you to figure out.
nice.
Not long, though I'm surprised that it works. I thought that it would fail somehow and I've have to insert a null check in atiddxSave64BitBAR instead, but it's been working for me for many hours now without trouble.
DRIVER=/usr/lib64/xorg/modules/drivers/fglrx_drv.so
TMPDRV=/tmp/fglrx_drv.so
cp $DRIVER $TMPDRV
for x in $(objdump -d $DRIVER|awk '/callq/&&/atiddxSave64BitBAR@plt/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
sed -i "s/$x/\x90\x90\x90\x90\x90/g" $TMPDRV
done
cp --remove-destination $TMPDRV $DRIVER
I guess it can patch any driver with that function name. Btw. the diff between 32+64 bit is call for 32 and callq for 64. Therefore the hack I posted above works with 32+64 bit as call matches callq too. It is funny to try this as you can remove the control file as someone found out to get a logo that way too. When you use Kanotix or Ubuntu Desktop live cds (32+64 bit) you can force this patching with -y option for 8.39.4 (current default). Of course i dont add the fedora hack as it is not usefull for debian at the moment.
What's funny is that there's a bunch of NOPped out code in ATI's latest around the signature stuff. Maybe they just cleared out the check instead of releasing new drivers.
BTW, I think his solution is a bit better - it also allows patching of multiple calls (and doesn't require my manual step). Neat idea to use objdump|awk to drive sed, in any case.
I'll update my original post to point at that one.
Comment