From 05ac439abdc23f21dd7ceb8160de30879f977d39 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 8 Mar 2005 15:42:57 +0000 Subject: [PATCH] * decl.c (finish_method): Give methods once-only linkage. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96106 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/java/ChangeLog | 4 ++++ gcc/java/decl.c | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 298bd725b858..78fab7f668ba 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2005-03-08 Julian Brown + + * decl.c (finish_method): Give methods once-only linkage. + 2005-03-07 Bryce McKinlay * verify-glue.c (vfy_is_assignable_from): Perform static check using diff --git a/gcc/java/decl.c b/gcc/java/decl.c index b7aa61650d35..ea7a9b4209a6 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -2036,6 +2036,13 @@ finish_method (tree fndecl) build2 (TRY_FINALLY_EXPR, void_type_node, *tp, exit)); } + /* Ensure non-abstract non-static non-private members are defined only once + when linking. This is an issue when using CNI to interface with C++ object + files. */ + if (! METHOD_STATIC (fndecl) && ! METHOD_PRIVATE (fndecl) + && ! METHOD_ABSTRACT (fndecl)) + make_decl_one_only (fndecl); + /* Prepend class initialization for static methods reachable from other classes. */ if (METHOD_STATIC (fndecl) && ! METHOD_PRIVATE (fndecl) -- 2.47.3