public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [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).