summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm14
1 files changed, 11 insertions, 3 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
index 9e4388e28d..d409450a80 100644
--- a/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
+++ b/source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
@@ -208,7 +208,8 @@ sub fn_declare($$$)
if (has_property($fn, "public")) {
pidl_hdr "$decl;";
- pidl "_PUBLIC_ $decl";
+ pidl "__attribute__((visibility(\"default\")))";
+ pidl "$decl";
} else {
pidl "static $decl";
}
@@ -1879,7 +1880,8 @@ sub ParseTypedefPrint($)
return if (has_property($e, "noprint"));
- pidl "_PUBLIC_ void ndr_print_$e->{NAME}(struct ndr_print *ndr, const char *name, $args)";
+ pidl "__attribute__((visibility(\"default\")))";
+ pidl "void ndr_print_$e->{NAME}(struct ndr_print *ndr, const char *name, $args)";
pidl "{";
indent;
$typefamily{$e->{DATA}->{TYPE}}->{PRINT_FN_BODY}->($e->{DATA}, $e->{NAME});
@@ -1917,7 +1919,8 @@ sub ParseFunctionPrint($)
return if has_property($fn, "noprint");
- pidl "_PUBLIC_ void ndr_print_$fn->{NAME}(struct ndr_print *ndr, const char *name, int flags, const struct $fn->{NAME} *r)";
+ pidl "__attribute__((visibility(\"default\")))";
+ pidl "void ndr_print_$fn->{NAME}(struct ndr_print *ndr, const char *name, int flags, const struct $fn->{NAME} *r)";
pidl "{";
indent;
@@ -2380,6 +2383,11 @@ sub GenerateIncludes()
pidl choose_header("librpc/gen_ndr/ndr_dcerpc.h", "gen_ndr/ndr_dcerpc.h");
pidl choose_header("librpc/rpc/dcerpc.h", "dcerpc.h"); #FIXME: This shouldn't be here!
}
+
+ pidl "/* define dummy __attribute__ for systems that don't have it */";
+ pidl "#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))";
+ pidl "#define __attribute__(p) /* nothing */";
+ pidl "#endif";
}
#####################################################################