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]

Re: Patch [cygwin/mingw/symbian?]: Fix PR 21801 and PR 21275 dllimportbug


Danny Smith wrote:
he following patch fixes PR 21801 and PR 21275 by moving the setting of
DECL_NON_ADDR_CONST_P for DECLS of dllimport'd symbols forward to when
the attribute is first handled, rather than postponing until we
encode_section_info.

There may be a problem with this on sh-symbian. That target does not
currently set DECL_NON_ADDR_CONST_P for dllimports, even though some of
the comments in config/sh/symbian.c suggest that it should (are those
comments just leftovers from winnt.c?) Could a sh-symbian maintainer
help with this?  Nick, I'm cc'ing you since you contributed symbian.c. Do
I need to guard DECL_NON_ADDR_CONST_P in handle_dll_attribute with a
TARGET_IS_PE_COFF macro?

Bootstrapped and regtested with C, C++, Ada on i686-pc-mingw32.

Danny

2005-05-01 Danny Smith <dannysmith@users.sourceforge.net>

	* tree.c (handle_dll_attribute): Set DECL_NON_ADDR_CONST_P for dllimports
	here...
	* config/i386/winnt.c (i386_pe_mark_dllimport): ...not here.


Index: tree.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree.c,v
retrieving revision 1.475
diff -c -3 -p -r1.475 tree.c
*** tree.c 23 Apr 2005 21:28:00 -0000 1.475
--- tree.c 30 Apr 2005 23:44:03 -0000
*************** handle_dll_attribute (tree * pnode, tree
*** 3314,3320 ****
if (current_function_decl != NULL_TREE && !TREE_STATIC (node))
TREE_PUBLIC (node) = 1;
}
! }
/* Report error if symbol is not accessible at global scope. */
if (!TREE_PUBLIC (node)
--- 3314,3324 ----
if (current_function_decl != NULL_TREE && !TREE_STATIC (node))
TREE_PUBLIC (node) = 1;
}
! ! /* The symbol is resolved via an indirect reference so we can't treat
! a pointer to this as a constant address. */
! DECL_NON_ADDR_CONST_P (node) = 1;
! }
/* Report error if symbol is not accessible at global scope. */
if (!TREE_PUBLIC (node)
Index: config/i386/winnt.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/winnt.c,v
retrieving revision 1.80
diff -c -3 -p -r1.80 winnt.c
*** config/i386/winnt.c 23 Apr 2005 21:28:21 -0000 1.80
--- config/i386/winnt.c 30 Apr 2005 23:44:05 -0000
*************** i386_pe_mark_dllimport (tree decl)
*** 345,352 ****
newrtl = gen_rtx_MEM (Pmode,symref);
XEXP (DECL_RTL (decl), 0) = newrtl;
- /* Can't treat a pointer to this as a constant address */
- DECL_NON_ADDR_CONST_P (decl) = 1;
}
/* Return string which is the former assembler name modified with a


Find local movie times and trailers on Yahoo! Movies.
http://au.movies.yahoo.com

patch keeps stating that the second part is incomplete, could you send this again as an attachment, please?

Gerrit
--
=^..^=

Action Soccer: http://www.action-soccer.de/?lv=de&id=505
(german online game)


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