This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch objc]: Fix varios regressions for windows targets


Hello,

this patch fixes recent regressions occuring to libobjc for
32-bit/64-bit windows targets. Problematic here is that dllexport
attribute was partially used, but not consequent. So the .def file
specified symbols were ignored (you can't mix dllexport with export
.def file) and so most of API weren't exported in DLL. Additionally I
noticed that some of the export API in library was marked by 'inline',
which seems to me more like a general bug, as by this not necessarily
the exported libary will contain this API symbol at all.
Due the cause that objc class information aren't exported by
specifying dllexport to it, I need to disable the marking of dllexport
in case of building objc library.

ChangeLog

2010-09-26  Kai Tietz

        * sendmsg.c (__objc_get_forward_imp): Remove inline.
        (get_imp): Likewise.
        (__objc_responds_to): Likewise.
        (objc_msg_lookup): Likewise.
        (objc_get_uninstalled_dtable): Likewise.
        * encoding.c (objc_skip_type_qualifiers): Likewise.
        (objc_skip_offset): Likewise.
        * archive.c (__objc_write_object): Likewise
        (__objc_write_class):
        (__objc_write_selector):
        (objc_read_char):
        (objc_read_unsigned_char):
        (objc_read_short):
        (objc_read_unsigned_short):
        (objc_read_int):
        (objc_read_long):
        (__objc_read_nbyte_uint):
        (objc_read_unsigned_int):
        (objc_read_unsigned_long):
        * objc/objc-decls.h (obc_EXPORT): Remove dllexport for DLL_EXPORT case.
        (objc_EXPORT): Likewise.
        * objc/message.h (objc-decls.h): Add include.
        * objc/objc-api.h: Mark API by objc_EXPORT.


Test for x86_64-w64-mingw32 and for i686-w64-mingw32. Ok for apply?

Regards,
Kai
-- 
|? (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

Attachment: fix_windobjc.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]