* [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service
@ 2020-01-04 20:20 Norbert Lange
2020-01-04 20:20 ` [PATCH] always export the symbols for the proc_service interface Norbert Lange
2020-01-06 19:21 ` [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service Pedro Alves
0 siblings, 2 replies; 10+ messages in thread
From: Norbert Lange @ 2020-01-04 20:20 UTC (permalink / raw)
To: gdb-patches
Compiling GDB with '-fvisibility=hidden' will remove the
symbols that should be exported.
This patch explicitly marks them as visible.
gdb/ChangeLog
2020-01-04 Norbert Lange <nolange79@gmail.com>
PR build/24805
* gdbsupport/gdb_proc_service.h: push/pop visibility
attribute for exported functions.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] always export the symbols for the proc_service interface
2020-01-04 20:20 [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service Norbert Lange
@ 2020-01-04 20:20 ` Norbert Lange
2020-01-06 16:07 ` Tom Tromey
2020-01-06 19:21 ` [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service Pedro Alves
1 sibling, 1 reply; 10+ messages in thread
From: Norbert Lange @ 2020-01-04 20:20 UTC (permalink / raw)
To: gdb-patches; +Cc: Norbert Lange
Compiling GDB with '-fvisibility=hidden' will remove the
symbols that should be exported.
This patch explicitly marks them as visible.
gdb/ChangeLog
PR build/24805
* gdbsupport/gdb_proc_service.h: push/pop visibility
attribute for exported functions.
---
gdb/gdbsupport/gdb_proc_service.h | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/gdb/gdbsupport/gdb_proc_service.h b/gdb/gdbsupport/gdb_proc_service.h
index 8565da3286..72abb5c1c0 100644
--- a/gdb/gdbsupport/gdb_proc_service.h
+++ b/gdb/gdbsupport/gdb_proc_service.h
@@ -23,6 +23,11 @@
#ifdef HAVE_PROC_SERVICE_H
+/* ensure the symbols are public, even if the default is hidden */
+#if __GNUC__ >= 4
+#pragma GCC visibility push(default)
+#endif
+
/* glibc's proc_service.h doesn't wrap itself with extern "C". Need
to do it ourselves. */
EXTERN_C_PUSH
@@ -31,6 +36,10 @@ EXTERN_C_PUSH
EXTERN_C_POP
+#if __GNUC__ >= 4
+#pragma GCC visibility pop
+#endif
+
#else /* HAVE_PROC_SERVICE_H */
/* The following fallback definitions have been imported and adjusted
@@ -69,6 +78,10 @@ EXTERN_C_POP
# endif
#endif
+#if __GNUC__ >= 4
+#pragma GCC visibility push(default)
+#endif
+
EXTERN_C_PUSH
/* Functions in this interface return one of these status codes. */
@@ -168,6 +181,10 @@ extern void ps_plog (const char *fmt, ...);
EXTERN_C_POP
+#if __GNUC__ >= 4
+#pragma GCC visibility pop
+#endif
+
#endif /* HAVE_PROC_SERVICE_H */
#endif /* COMMON_GDB_PROC_SERVICE_H */
--
2.24.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] always export the symbols for the proc_service interface
2020-01-04 20:20 ` [PATCH] always export the symbols for the proc_service interface Norbert Lange
@ 2020-01-06 16:07 ` Tom Tromey
2020-01-06 23:22 ` Norbert Lange
0 siblings, 1 reply; 10+ messages in thread
From: Tom Tromey @ 2020-01-06 16:07 UTC (permalink / raw)
To: Norbert Lange; +Cc: gdb-patches
>>>>> "Norbert" == Norbert Lange <nolange79@gmail.com> writes:
Norbert> Compiling GDB with '-fvisibility=hidden' will remove the
Norbert> symbols that should be exported.
Norbert> This patch explicitly marks them as visible.
Norbert> gdb/ChangeLog
Norbert> PR build/24805
Norbert> * gdbsupport/gdb_proc_service.h: push/pop visibility
Norbert> attribute for exported functions.
Thanks for the patch.
I have one question and one comment.
Norbert> +++ b/gdb/gdbsupport/gdb_proc_service.h
Norbert> @@ -23,6 +23,11 @@
Norbert> #ifdef HAVE_PROC_SERVICE_H
Norbert> +/* ensure the symbols are public, even if the default is hidden */
In the gdb style, comments should be complete sentences, which end in a
period followed by 2 spaces. So this should read:
/* Ensure the symbols are public, even if the default is hidden. */
Norbert> +#if __GNUC__ >= 4
Norbert> +#pragma GCC visibility pop
Norbert> +#endif
Would it be better to just have this done a single time at the top and
bottom of the file?
thanks,
Tom
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service
2020-01-04 20:20 [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service Norbert Lange
2020-01-04 20:20 ` [PATCH] always export the symbols for the proc_service interface Norbert Lange
@ 2020-01-06 19:21 ` Pedro Alves
2020-01-06 23:39 ` Norbert Lange
1 sibling, 1 reply; 10+ messages in thread
From: Pedro Alves @ 2020-01-06 19:21 UTC (permalink / raw)
To: Norbert Lange, gdb-patches
On 1/4/20 8:20 PM, Norbert Lange wrote:
> Compiling GDB with '-fvisibility=hidden' will remove the
> symbols that should be exported.
> This patch explicitly marks them as visible.
Curious. We have gdb/proc-service.list supposedly for this,
doesn't -Wl,--dynamic-list work with -fvisibility=hidden then?
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] always export the symbols for the proc_service interface
2020-01-06 16:07 ` Tom Tromey
@ 2020-01-06 23:22 ` Norbert Lange
0 siblings, 0 replies; 10+ messages in thread
From: Norbert Lange @ 2020-01-06 23:22 UTC (permalink / raw)
To: Tom Tromey; +Cc: gdb-patches
Am Mo., 6. Jan. 2020 um 17:07 Uhr schrieb Tom Tromey <tom@tromey.com>:
>
> >>>>> "Norbert" == Norbert Lange <nolange79@gmail.com> writes:
>
> Norbert> Compiling GDB with '-fvisibility=hidden' will remove the
> Norbert> symbols that should be exported.
> Norbert> This patch explicitly marks them as visible.
>
> Norbert> gdb/ChangeLog
>
> Norbert> PR build/24805
> Norbert> * gdbsupport/gdb_proc_service.h: push/pop visibility
> Norbert> attribute for exported functions.
>
> Thanks for the patch.
>
> I have one question and one comment.
>
> Norbert> +++ b/gdb/gdbsupport/gdb_proc_service.h
> Norbert> @@ -23,6 +23,11 @@
>
> Norbert> #ifdef HAVE_PROC_SERVICE_H
>
> Norbert> +/* ensure the symbols are public, even if the default is hidden */
>
> In the gdb style, comments should be complete sentences, which end in a
> period followed by 2 spaces. So this should read:
>
> /* Ensure the symbols are public, even if the default is hidden. */
Noted, am I required to redo the patch if that's the only change?
>
> Norbert> +#if __GNUC__ >= 4
> Norbert> +#pragma GCC visibility pop
> Norbert> +#endif
>
> Would it be better to just have this done a single time at the top and
> bottom of the file?
there are other headers included in between, so that's a bad idea
(and you could do attach function attributes instead for the second case,
see patch in bug report.)
I still dont get why the external header is supported at all, if the
implementation
needs to match 100% anyway (unlike where you just call functions from a header).
Norbert
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service
2020-01-06 19:21 ` [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service Pedro Alves
@ 2020-01-06 23:39 ` Norbert Lange
2020-01-14 15:47 ` Pedro Alves
0 siblings, 1 reply; 10+ messages in thread
From: Norbert Lange @ 2020-01-06 23:39 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
Am Mo., 6. Jan. 2020 um 20:21 Uhr schrieb Pedro Alves <palves@redhat.com>:
>
> On 1/4/20 8:20 PM, Norbert Lange wrote:
> > Compiling GDB with '-fvisibility=hidden' will remove the
> > symbols that should be exported.
> > This patch explicitly marks them as visible.
>
> Curious. We have gdb/proc-service.list supposedly for this,
> doesn't -Wl,--dynamic-list work with -fvisibility=hidden then?
>
> Thanks,
> Pedro Alves
>
Obviously it doesn't, else I would not have spent time figuring out
why libthread_db wont load.
Unfortunately you need to pass the correct visibility to the
compilation, a hidden symbol can
be optimized globally almost like a static function locally.
A visible symbol needs to be accessed though a layer of indirection.
Wish you could disable
that logic for micro controllers where that means you don't get simple
relative jumps.
Would love if the linker would be the only one controlling the type of symbol,
that would make some subset of LTO required. But thats offtopic.
-Wl,--dynamic-list merely filters the visible symbols, it does not see
"hidden" ones.
While we are at it, I see alot stuff exported from gdb, besides the
proc_service.
I am not sure where they come from or intentional
# debian gdb
# nm -D '/usr/bin/gdb' | grep ' [TVB] '
0000000000491170 T _obstack_allocated_p
0000000000491040 T _obstack_begin
0000000000491060 T _obstack_begin_1
00000000004911b0 T _obstack_free
0000000000491220 T _obstack_memory_used
0000000000491080 T _obstack_newchunk
00000000002daf80 T ps_getpid
00000000000f4f10 T ps_get_thread_area
00000000002daea0 T ps_lgetfpregs
00000000002dadc0 T ps_lgetregs
00000000002daf10 T ps_lsetfpregs
00000000002dae30 T ps_lsetregs
00000000002dada0 T ps_pdread
00000000002dadb0 T ps_pdwrite
00000000002dace0 T ps_pglobal_lookup
0000000000163770 T xmalloc
00000000001637a0 T xrealloc
0000000000167790 T _Znam
00000000001677a0 T _ZnamRKSt9nothrow_t
0000000000167720 T _Znwm
0000000000167770 T _ZnwmRKSt9nothrow_t
# gdb master built with -fvisibility=hidden
nm -D '/tmp/devsupport_gdb/usr/local/bin/gdb' | grep ' [TVB] '
0000000000a7e1a0 B __environ
0000000000a7e1a0 V environ
0000000000a7e1a8 B optarg
0000000000a7e1c8 B optind
00000000005e4f40 T ps_getpid
00000000007913c0 T ps_get_thread_area
00000000005e4fc0 T ps_lgetfpregs
00000000005e50a0 T ps_lgetregs
00000000005e4f50 T ps_lsetfpregs
00000000005e5030 T ps_lsetregs
00000000005e5120 T ps_pdread
00000000005e5110 T ps_pdwrite
00000000005e5130 T ps_pglobal_lookup
0000000000a7e1c0 B stderr
0000000000a7e1b0 B stdin
0000000000a7e180 B stdout
0000000000695510 T _Znam
0000000000691530 T _ZnamRKSt9nothrow_t
0000000000693ae0 T _Znwm
0000000000691550 T _ZnwmRKSt9nothrow_t
0000000000a6e040 V _ZTIN10__cxxabiv115__forced_unwindE
0000000000a6e1a8 V _ZTINSt13__future_base12_Result_baseE
0000000000a6dfc0 V _ZTINSt6thread6_StateE
0000000000a6dfd0 V _ZTISt12future_error
0000000000a6e0a0 V _ZTISt9bad_alloc
0000000000a6dfe8 V _ZTVN10__cxxabiv117__class_type_infoE
0000000000a6e050 V _ZTVN10__cxxabiv119__pointer_type_infoE
0000000000a6e110 V _ZTVN10__cxxabiv120__function_type_infoE
0000000000a6e0b8 V _ZTVN10__cxxabiv120__si_class_type_infoE
0000000000a6e150 V _ZTVN10__cxxabiv121__vmi_class_type_infoE
0000000000a6e1c0 V _ZTVSt12future_error
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service
2020-01-06 23:39 ` Norbert Lange
@ 2020-01-14 15:47 ` Pedro Alves
2020-01-14 16:28 ` Pedro Alves
0 siblings, 1 reply; 10+ messages in thread
From: Pedro Alves @ 2020-01-14 15:47 UTC (permalink / raw)
To: Norbert Lange; +Cc: gdb-patches
On 1/6/20 11:39 PM, Norbert Lange wrote:
> Am Mo., 6. Jan. 2020 um 20:21 Uhr schrieb Pedro Alves <palves@redhat.com>:
>>
>> On 1/4/20 8:20 PM, Norbert Lange wrote:
>>> Compiling GDB with '-fvisibility=hidden' will remove the
>>> symbols that should be exported.
>>> This patch explicitly marks them as visible.
>>
>> Curious. We have gdb/proc-service.list supposedly for this,
>> doesn't -Wl,--dynamic-list work with -fvisibility=hidden then?
>>
>
> Obviously it doesn't, else I would not have spent time figuring out
> why libthread_db wont load.
OK. Haven't looked at visibility issues in years. It also wasn't clear
to me whether the issue could be that -Wl,--dynamic-list wasn't used
in your build for some reason, maybe related to how you're configuring GDB.
> -Wl,--dynamic-list merely filters the visible symbols, it does not see
> "hidden" ones.
BTW, you didn't post an actual patch to the list:
https://sourceware.org/ml/gdb-patches/2020-01/msg00083.html
I found it in bugzilla, though.
We can't drop support for the glibc header, since that would mean
to also drop support for the Solaris version of the header, and
also for whatever other libcs that people build gdb with (e.g.,
does musl have its own version of the header with different types?).
Up until not so long ago, glibc didn't use to install the header,
that's why we keep a local copy, IIRC.
How about something like this? It's similar to your #2 at
<https://sourceware.org/bugzilla/show_bug.cgi?id=24805#c3>, but
I'm using typeof to avoid issues with different systems using
different prototypes.
From 224b74b0fab67cdf25119f16be98a80ada071a09 Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Tue, 14 Jan 2020 15:30:49 +0000
Subject: [PATCH] Ensure proc-service symbols have default visibility
---
gdb/gdbsupport/gdb_proc_service.h | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/gdb/gdbsupport/gdb_proc_service.h b/gdb/gdbsupport/gdb_proc_service.h
index 3ce2ee80fa9..9872ab2bca4 100644
--- a/gdb/gdbsupport/gdb_proc_service.h
+++ b/gdb/gdbsupport/gdb_proc_service.h
@@ -170,4 +170,33 @@ EXTERN_C_POP
#endif /* HAVE_PROC_SERVICE_H */
+/* Make sure we export the needed symbols, in case GDB is built with
+ -fvisibility=hidden. */
+
+#define PS_EXPORT(SYM) \
+ __attribute__((visibility ("default"))) typeof (SYM) SYM
+
+PS_EXPORT (ps_get_thread_area);
+PS_EXPORT (ps_getpid);
+PS_EXPORT (ps_lcontinue);
+PS_EXPORT (ps_lgetfpregs);
+PS_EXPORT (ps_lgetregs);
+PS_EXPORT (ps_lsetfpregs);
+PS_EXPORT (ps_lsetregs);
+PS_EXPORT (ps_lstop);
+PS_EXPORT (ps_pcontinue);
+PS_EXPORT (ps_pdread);
+PS_EXPORT (ps_pdwrite);
+PS_EXPORT (ps_pglobal_lookup);
+PS_EXPORT (ps_pstop);
+PS_EXPORT (ps_ptread);
+PS_EXPORT (ps_ptwrite);
+
+#ifdef __sun__
+PS_EXPORT (ps_lgetxregs);
+PS_EXPORT (ps_lgetxregsize);
+PS_EXPORT (ps_lsetxregs);
+PS_EXPORT (ps_plog);
+#endif
+
#endif /* COMMON_GDB_PROC_SERVICE_H */
base-commit: 7da6a5b938b426379f61e56e259a925bedfe242b
--
2.14.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service
2020-01-14 15:47 ` Pedro Alves
@ 2020-01-14 16:28 ` Pedro Alves
2020-01-14 16:57 ` Norbert Lange
0 siblings, 1 reply; 10+ messages in thread
From: Pedro Alves @ 2020-01-14 16:28 UTC (permalink / raw)
To: Norbert Lange; +Cc: gdb-patches
On 1/14/20 3:36 PM, Pedro Alves wrote:
> On 1/6/20 11:39 PM, Norbert Lange wrote:
>> Am Mo., 6. Jan. 2020 um 20:21 Uhr schrieb Pedro Alves <palves@redhat.com>:
>>>
>>> On 1/4/20 8:20 PM, Norbert Lange wrote:
>>>> Compiling GDB with '-fvisibility=hidden' will remove the
>>>> symbols that should be exported.
>>>> This patch explicitly marks them as visible.
>>>
>>> Curious. We have gdb/proc-service.list supposedly for this,
>>> doesn't -Wl,--dynamic-list work with -fvisibility=hidden then?
>>>
>>
>> Obviously it doesn't, else I would not have spent time figuring out
>> why libthread_db wont load.
>
> OK. Haven't looked at visibility issues in years. It also wasn't clear
> to me whether the issue could be that -Wl,--dynamic-list wasn't used
> in your build for some reason, maybe related to how you're configuring GDB.
>
>> -Wl,--dynamic-list merely filters the visible symbols, it does not see
>> "hidden" ones.
>
> BTW, you didn't post an actual patch to the list:
> https://sourceware.org/ml/gdb-patches/2020-01/msg00083.html
I knew I must have been confused. I found your patch on the list,
as a reply to that...
>
> I found it in bugzilla, though.
>
> How about something like this? It's similar to your #2 at
> <https://sourceware.org/bugzilla/show_bug.cgi?id=24805#c3>, but
> I'm using typeof to avoid issues with different systems using
> different prototypes.
BTW, I forgot to mention why I suggested this as alternative
to the push/pop approach. It was that the push/pop approach
makes everything indirectly included by <proc_service.h>
have default visibility too. I don't know whether that ends
up being any function in practice, though.
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service
2020-01-14 16:28 ` Pedro Alves
@ 2020-01-14 16:57 ` Norbert Lange
2020-01-16 19:56 ` Pedro Alves
0 siblings, 1 reply; 10+ messages in thread
From: Norbert Lange @ 2020-01-14 16:57 UTC (permalink / raw)
To: Pedro Alves; +Cc: gdb-patches
Am Di., 14. Jan. 2020 um 16:36 Uhr schrieb Pedro Alves <palves@redhat.com>:
>
> We can't drop support for the glibc header, since that would mean
> to also drop support for the Solaris version of the header, and
> also for whatever other libcs that people build gdb with (e.g.,
> does musl have its own version of the header with different types?).
> Up until not so long ago, glibc didn't use to install the header,
> that's why we keep a local copy, IIRC.
No, you don't get what I am trying to say.
Commonly you only use external headers for function calls,
and the exact definition can vary a bit.
What you are doing, for ex. in proc-service.c is implementing the function.
like:
> ps_err_e
> ps_pdread (struct ps_prochandle *ph, psaddr_t addr, void *buf, size_t size)
you don't get much, if any, information from the header that's not replicated
in the source. The only upside would be to be able to detect mismatches
(but that could be done in a separate test_external_proc_header.c,
potentially even during configuration).
Whatever other libc's (musl doesnt provide/use this AFAIK) or OS's do,
including their header does not help at all?
You get no mismatch: Don't need it.
You get a mismatch: you need to fix that in your c file aswell.
>
> How about something like this? It's similar to your #2 at
> <https://sourceware.org/bugzilla/show_bug.cgi?id=24805#c3>, but
> I'm using typeof to avoid issues with different systems using
> different prototypes.
Yeah, that's better, unless typeof is not supported by the compiler
(or its C++ mode).
Am Di., 14. Jan. 2020 um 16:47 Uhr schrieb Pedro Alves <palves@redhat.com>:
>
> On 1/14/20 3:36 PM, Pedro Alves wrote:
> > On 1/6/20 11:39 PM, Norbert Lange wrote:
> >> Am Mo., 6. Jan. 2020 um 20:21 Uhr schrieb Pedro Alves <palves@redhat.com>:
> >>>
> >>> On 1/4/20 8:20 PM, Norbert Lange wrote:
> >>>> Compiling GDB with '-fvisibility=hidden' will remove the
> >>>> symbols that should be exported.
> >>>> This patch explicitly marks them as visible.
> >>>
> >>> Curious. We have gdb/proc-service.list supposedly for this,
> >>> doesn't -Wl,--dynamic-list work with -fvisibility=hidden then?
> >>>
> >>
> >> Obviously it doesn't, else I would not have spent time figuring out
> >> why libthread_db wont load.
> >
> > OK. Haven't looked at visibility issues in years. It also wasn't clear
> > to me whether the issue could be that -Wl,--dynamic-list wasn't used
> > in your build for some reason, maybe related to how you're configuring GDB.
> >
> >> -Wl,--dynamic-list merely filters the visible symbols, it does not see
> >> "hidden" ones.
> >
> > BTW, you didn't post an actual patch to the list:
> > https://sourceware.org/ml/gdb-patches/2020-01/msg00083.html
>
> I knew I must have been confused. I found your patch on the list,
> as a reply to that...
NP
>
> > How about something like this? It's similar to your #2 at
> > <https://sourceware.org/bugzilla/show_bug.cgi?id=24805#c3>, but
> > I'm using typeof to avoid issues with different systems using
> > different prototypes.
>
> BTW, I forgot to mention why I suggested this as alternative
> to the push/pop approach. It was that the push/pop approach
> makes everything indirectly included by <proc_service.h>
> have default visibility too. I don't know whether that ends
> up being any function in practice, though.
Yes I am aware of this issue, and its a latent problem I guess.
Normally you don't implement header definitions, so you might be ok.
Adding tests whether the functions are exported would be nice.
Norbert.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service
2020-01-14 16:57 ` Norbert Lange
@ 2020-01-16 19:56 ` Pedro Alves
0 siblings, 0 replies; 10+ messages in thread
From: Pedro Alves @ 2020-01-16 19:56 UTC (permalink / raw)
To: Norbert Lange; +Cc: gdb-patches
On 1/14/20 4:56 PM, Norbert Lange wrote:
> Am Di., 14. Jan. 2020 um 16:36 Uhr schrieb Pedro Alves <palves@redhat.com>:
>>
>> We can't drop support for the glibc header, since that would mean
>> to also drop support for the Solaris version of the header, and
>> also for whatever other libcs that people build gdb with (e.g.,
>> does musl have its own version of the header with different types?).
>> Up until not so long ago, glibc didn't use to install the header,
>> that's why we keep a local copy, IIRC.
>
> No, you don't get what I am trying to say.
> Commonly you only use external headers for function calls,
> and the exact definition can vary a bit.
>
> What you are doing, for ex. in proc-service.c is implementing the function.
>
> like:
>> ps_err_e
>> ps_pdread (struct ps_prochandle *ph, psaddr_t addr, void *buf, size_t size)
>
> you don't get much, if any, information from the header that's not replicated
> in the source. The only upside would be to be able to detect mismatches
> (but that could be done in a separate test_external_proc_header.c,
> potentially even during configuration).
>
> Whatever other libc's (musl doesnt provide/use this AFAIK) or OS's do,
> including their header does not help at all?
Well, there's also typedefs, enums, structures. ps_err_e, for example.
>
> You get no mismatch: Don't need it.
> You get a mismatch: you need to fix that in your c file aswell.
Or in the header, if the mismatch is in the (non-function) types.
>
>>
>> How about something like this? It's similar to your #2 at
>> <https://sourceware.org/bugzilla/show_bug.cgi?id=24805#c3>, but
>> I'm using typeof to avoid issues with different systems using
>> different prototypes.
>
> Yeah, that's better, unless typeof is not supported by the compiler
> (or its C++ mode).
AFAIK, all relevant compilers support it.
>>> How about something like this? It's similar to your #2 at
>>> <https://sourceware.org/bugzilla/show_bug.cgi?id=24805#c3>, but
>>> I'm using typeof to avoid issues with different systems using
>>> different prototypes.
>>
>> BTW, I forgot to mention why I suggested this as alternative
>> to the push/pop approach. It was that the push/pop approach
>> makes everything indirectly included by <proc_service.h>
>> have default visibility too. I don't know whether that ends
>> up being any function in practice, though.
>
> Yes I am aware of this issue, and its a latent problem I guess.
> Normally you don't implement header definitions, so you might be ok.
>
> Adding tests whether the functions are exported would be nice.
Agreed.
I've merged this to master now.
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-01-16 19:21 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-04 20:20 [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service Norbert Lange
2020-01-04 20:20 ` [PATCH] always export the symbols for the proc_service interface Norbert Lange
2020-01-06 16:07 ` Tom Tromey
2020-01-06 23:22 ` Norbert Lange
2020-01-06 19:21 ` [PATCH][PR build/24805] Explicitly export symbols from gdb_proc_service Pedro Alves
2020-01-06 23:39 ` Norbert Lange
2020-01-14 15:47 ` Pedro Alves
2020-01-14 16:28 ` Pedro Alves
2020-01-14 16:57 ` Norbert Lange
2020-01-16 19:56 ` Pedro Alves
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox