On Tue, 1 Apr 2025, Corinna Vinschen wrote:

> Oh, Jeremy, here's a question.  We only add udis86 to the main branch.
> What about the 3.6 branch, does it still need a patch to accommodate
> the fast_cwd magic for a newer, upcoming Windows version?

I was going to ask about that too.  I assume the plan is to keep the new
udis86 code for 3.7, and continue applying band-aids to the old code on
3.6 as needed.  The question remains, do we apply band-aids for insider
builds or wait for an actual release (or something approximating a release
candidate)?

> And btw., I checked the file size again, and it turns out that after
> stripping the debug symbols the DLL takes ~30 pages or 120 K more memory
> than before udis86.  I hope that's ok.  But if you see ways to shave a
> few pages off by dropping code from udis86, I wouldn't be too unhappy :}

Hmm, I only tested on top of msys2 (which is on gcc 13.3.0), but here's
what I see:

$ ls -l
total 47952
-rwxr-xr-x 1 XXX None 24682293 Apr  1 10:14 postmsys-2.0.dll
-rwxr-xr-x 1 XXX None 24417887 Apr  1 10:12 premsys-2.0.dll

$ echo $(( $(stat -c %s postmsys-2.0.dll) - $(stat -c %s premsys-2.0.dll) ))
264406

$ strip premsys-2.0.dll
$ strip postmsys-2.0.dll

$ ls -l
total 6428
-rwxr-xr-x 1 XXX None 3330598 Apr  1 10:15 postmsys-2.0.dll
-rwxr-xr-x 1 XXX None 3246118 Apr  1 10:15 premsys-2.0.dll

$ echo $(( $(stat -c %s postmsys-2.0.dll) - $(stat -c %s premsys-2.0.dll) ))
84480

One thing I noticed that could make the code using udis86 smaller and
faster is to use members of the ud_t struct directly instead of calling
accessor functions.  I don't know for sure if these members are intended
to be public or not (but they do seem to know how to declare members as
non-public: in ud_operand_t, they have an "internal use only" comment
followed by members named with leading underscores).  I don't think it
would make a large dent in the size of the code relative to the size of
udis86 itself though.

Reply via email to