Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #384112
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Casting the return value of ... |
| Date | 2024-03-30 10:33 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <86le5zipzo.fsf@linuxsc.com> (permalink) |
| References | <uu416t$33u55$1@news.xmission.com> <20240328105203.773@kylheku.com> <K0jNN.158579$zF_1.100106@fx18.iad> |
scott@slp53.sl.home (Scott Lurndal) writes:
> Kaz Kylheku <433-929-6894@kylheku.com> writes:
>
>> On 2024-03-28, Kenny McCormack <gazelle@shell.xmission.com> wrote:
>>
>>> But here's the thing. Is the casting of the result of dlsym()
>>> [to a function pointer type] necessary?
>>> Isn't this the same as "casting the return value of malloc()", where you
>>
>> Conversions between function pointers and data pointers are an
>> extension; it is not well-defined behavior in ISO C.
>>
>> I also seem to remember something like this, but I cannot trust this
>> documentation without a chapter-and-verse citation.
>
> https://pubs.opengroup.org/onlinepubs/9699919799/functions/dlsym.html
>
>> Assuming it is true, there you have it; if you're on POSIX, the compiler
>> is required to have the extension and it is connected to casting,
>> in which case the cast is required.
>
> I've used this form for the last two decades, with gcc, with no
> issues:
>
> /**
> * Each shared object that simulates a Data Link Processor (DLP), will
> * contain a single namespace-scope function <b>get_dlp</b> which constructs
> * a DLP object of the specified type (for example, a #c_uniline_dlp,
> * #c_card_reader_dlp, et alia). <b>get_dlp</b> returns the constructed
> * object as a #c_dlp object to the #channel function, which is then used
> * by the I/O subsystem to request services of the DLP at the MLI level.
> */
> typedef c_dlp* (*get_dlp_t)(const char *, uint64_t, c_logger *);
> ...
> get_dlp_t sym;
> ...
>
> sym = (get_dlp_t)dlsym(handle, "get_dlp");
> if (sym == NULL) {
> lp->log("Invalid DLP shared object format: %s\n", dlerror());
> unregister_handle(channel);
> dlclose(handle);
> return 1;
> }
>
>
>> I think there was a time in the development of GCC when there was
>> a warning even with the cast. I don't think it's enabled by default
>> now?
>
> We compile with -Wall -Werror and have never seen any warnings related to
> casting the result of dlsym(), and we build with GCC[4..13].
Do you use -pedantic? Compiling with -pedantic using gcc 8.4.0
gives a warning diagnostic (and a fatal error if -pedantic-errors
is specified in place of -pedantic).
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
Casting the return value of ... gazelle@shell.xmission.com (Kenny McCormack) - 2024-03-28 15:09 +0000
Re: Casting the return value of ... Kaz Kylheku <433-929-6894@kylheku.com> - 2024-03-28 18:16 +0000
Re: Casting the return value of ... scott@slp53.sl.home (Scott Lurndal) - 2024-03-28 18:53 +0000
Re: Casting the return value of ... Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-03-30 10:33 -0700
Re: Casting the return value of ... scott@slp53.sl.home (Scott Lurndal) - 2024-03-30 19:29 +0000
Re: Casting the return value of ... Lawrence D'Oliveiro <ldo@nz.invalid> - 2024-03-30 23:05 +0000
Re: Casting the return value of ... scott@slp53.sl.home (Scott Lurndal) - 2024-03-30 23:25 +0000
Re: Casting the return value of ... David Brown <david.brown@hesbynett.no> - 2024-03-31 15:44 +0200
Re: Casting the return value of ... "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2024-03-31 13:15 -0700
Re: Casting the return value of ... Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-04-08 23:01 -0700
Re: Casting the return value of ... David Brown <david.brown@hesbynett.no> - 2024-04-09 10:03 +0200
Re: Casting the return value of ... Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-03-28 12:38 -0700
Re: Casting the return value of ... bart <bc@freeuk.com> - 2024-03-28 20:30 +0000
Re: Casting the return value of ... Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-03-28 14:07 -0700
Re: Casting the return value of ... "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2024-03-28 14:15 -0700
Re: Casting the return value of ... Kaz Kylheku <433-929-6894@kylheku.com> - 2024-03-28 21:44 +0000
Re: Casting the return value of ... Kaz Kylheku <433-929-6894@kylheku.com> - 2024-03-28 22:01 +0000
Re: Casting the return value of ... Kaz Kylheku <433-929-6894@kylheku.com> - 2024-03-28 22:33 +0000
Re: Casting the return value of ... Michael S <already5chosen@yahoo.com> - 2024-03-29 15:53 +0200
gcc Bugzilla search (was: Casting the return value of ...) Michael S <already5chosen@yahoo.com> - 2024-03-29 16:01 +0200
Re: gcc Bugzilla search David Brown <david.brown@hesbynett.no> - 2024-03-29 17:00 +0100
Re: Casting the return value of ... Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-03-28 15:37 -0700
Re: Casting the return value of ... David Brown <david.brown@hesbynett.no> - 2024-03-29 14:06 +0100
Re: Casting the return value of ... "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2024-03-29 15:46 -0700
Re: Casting the return value of ... David Brown <david.brown@hesbynett.no> - 2024-03-29 13:58 +0100
Re: Casting the return value of ... bart <bc@freeuk.com> - 2024-03-29 13:32 +0000
Re: Casting the return value of ... David Brown <david.brown@hesbynett.no> - 2024-03-29 17:10 +0100
Re: Casting the return value of ... Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-03-30 02:32 -0700
Re: Casting the return value of ... bart <bc@freeuk.com> - 2024-03-30 11:14 +0000
Re: Casting the return value of ... Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-04-08 23:41 -0700
Re: Casting the return value of ... Andrey Tarasevich <andreytarasevich@hotmail.com> - 2024-03-28 21:41 -0700
Re: Casting the return value of ... Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-03-28 22:02 -0700
Re: Casting the return value of ... Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-03-29 15:52 -0700
csiph-web