* [PATCH] Avoid short i386 register names on Solaris/x86 [PR25981]
@ 2020-05-18 11:34 Rainer Orth
2020-05-18 14:17 ` Joel Brobecker
0 siblings, 1 reply; 2+ messages in thread
From: Rainer Orth @ 2020-05-18 11:34 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 2107 bytes --]
This is the 32-bit companion to
Remove unused ps_lgetLDT etc. on Solaris/x86 [PR25981]
https://sourceware.org/pipermail/gdb-patches/2020-May/168713.html
A 32-bit default gdb fails to compile with the updated <sys/regset.h>.
While it is also affected by the lack of a GS definition, which the
compantion patch above fixes, it also has
/vol/src/gnu/gdb/hg/master/git/gdb/i386-sol2-nat.c:181:3: error: 'EAX' was not declared in this scope
181 | EAX, ECX, EDX, EBX,
| ^~~
and several more.
While this could be fixed by either including <ucontext.h> here or
provding fallback definitions of the register macros, I chose to do what
the 64-bit-default code in the same file
(amd64_sol2_gregset32_reg_offset[]) does, namely just hardcode the
numeric values instead. They are part of the ABI and thus guaranteed
not to change.
With this patch, a i386-pc-solaris2.11 configuration on master compiles
again, however, it doesn't work. However, I could successfully test it
on the gdb-9 branch.
Compiling and testing proved to be messy, unfortunately:
* For one, Solaris <sys/procfs.h> and largefile support used to be
mutually exclusive (fixed in Solaris 11.4 and Illumos), which was
exacerbated by the fact that g++ predefines _FILE_OFFSET_BITS=64 since
GCC 9.1.0. For now I've worked around this by adding
-U_FILE_OFFSET_BITS to CXXFLAGS and configuring with
--disable-largefile. I hope to clean this up in a future patch.
* gdb still defaults to startup-with-shell on. However, /bin/bash is a
64-bit executable which cannot be debugged by a 32-bit gdb. I hacked
around that part by pointing $SHELL at a 32-bit bash before running
make check.
Like its companion, I mean to apply this patch to master soon. Also ok
for the gdb-9 branch?
Thanks.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
2020-05-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR build/25981
* i386-sol2-nat.c [PR_MODEL_NATIVE != PR_MODEL_LP64] (regmap):
Hardcode register numbers.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: solx86-no-short-regnames.patch --]
[-- Type: text/x-patch, Size: 794 bytes --]
# HG changeset patch
# Parent 5c9d0cbd828af3a966218440022ba7fb248b5ca5
Avoid short i386 register names on Solaris/x86 [PR25981]
diff --git a/gdb/i386-sol2-nat.c b/gdb/i386-sol2-nat.c
--- a/gdb/i386-sol2-nat.c
+++ b/gdb/i386-sol2-nat.c
@@ -178,10 +178,22 @@ fill_fpregset (const struct regcache *re
format and GDB's register array layout. */
static int regmap[] =
{
- EAX, ECX, EDX, EBX,
- UESP, EBP, ESI, EDI,
- EIP, EFL, CS, SS,
- DS, ES, FS, GS
+ 11 /* EAX */,
+ 10 /* ECX */,
+ 9 /* EDX */,
+ 8 /* EBX */,
+ 17 /* UESP */,
+ 6 /* EBP */,
+ 5 /* ESI */,
+ 4 /* EDI */,
+ 14 /* EIP */,
+ 16 /* EFL */,
+ 15 /* CS */,
+ 18 /* SS */,
+ 3 /* DS */,
+ 2 /* ES */,
+ 1 /* FS */,
+ 0 /* GS */
};
/* Fill GDB's register array with the general-purpose register values
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Avoid short i386 register names on Solaris/x86 [PR25981]
2020-05-18 11:34 [PATCH] Avoid short i386 register names on Solaris/x86 [PR25981] Rainer Orth
@ 2020-05-18 14:17 ` Joel Brobecker
0 siblings, 0 replies; 2+ messages in thread
From: Joel Brobecker @ 2020-05-18 14:17 UTC (permalink / raw)
To: Rainer Orth; +Cc: gdb-patches
Hi Rainer,
> Like its companion, I mean to apply this patch to master soon. Also ok
> for the gdb-9 branch?
> 2020-05-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
>
> PR build/25981
> * i386-sol2-nat.c [PR_MODEL_NATIVE != PR_MODEL_LP64] (regmap):
> Hardcode register numbers.
OK for the gdb-9-branch as well.
> # HG changeset patch
> # Parent 5c9d0cbd828af3a966218440022ba7fb248b5ca5
> Avoid short i386 register names on Solaris/x86 [PR25981]
>
> diff --git a/gdb/i386-sol2-nat.c b/gdb/i386-sol2-nat.c
> --- a/gdb/i386-sol2-nat.c
> +++ b/gdb/i386-sol2-nat.c
> @@ -178,10 +178,22 @@ fill_fpregset (const struct regcache *re
> format and GDB's register array layout. */
> static int regmap[] =
> {
> - EAX, ECX, EDX, EBX,
> - UESP, EBP, ESI, EDI,
> - EIP, EFL, CS, SS,
> - DS, ES, FS, GS
> + 11 /* EAX */,
> + 10 /* ECX */,
> + 9 /* EDX */,
> + 8 /* EBX */,
> + 17 /* UESP */,
> + 6 /* EBP */,
> + 5 /* ESI */,
> + 4 /* EDI */,
> + 14 /* EIP */,
> + 16 /* EFL */,
> + 15 /* CS */,
> + 18 /* SS */,
> + 3 /* DS */,
> + 2 /* ES */,
> + 1 /* FS */,
> + 0 /* GS */
> };
>
> /* Fill GDB's register array with the general-purpose register values
--
Joel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-05-18 14:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-18 11:34 [PATCH] Avoid short i386 register names on Solaris/x86 [PR25981] Rainer Orth
2020-05-18 14:17 ` Joel Brobecker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).