Joe - I think dup proc is the only way to go. As to your comment "and even then the order isn't _guaranteed_" that should be dealt with by binder language/source instead of doing Export *All. That guarantees the slot sequence.


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Apr 2, 2019, at 8:43 AM, Joe Pluta <joepluta@xxxxxxxxxxxxxxxxx> wrote:

Has anybody successfully used the weak #pragma for a function? I'm trying to create a service program with three modules: one that references a function, one with that function defined weakly, and one with the function defined strongly. In that scenario, I should be able to combine the following:

Reference, weak: calls weak
Reference, strong: calls strong
Reference, weak, strong: calls strong
Reference only: won't compile

The best example code I found was in the AIX reference:

https://www.ibm.com/support/knowledgecenter/SSGH3R_13.1.0/com.ibm.xlcpp131.aix.doc/compiler_ref/prag_weak.html

From what I can tell, that same syntax should work in the ILE compiler, so I created the following:

|// TFOO1.CPP #include <stdio.h> void foo(); int main() { foo(); } // TFOO2.CPP #include <stdio.h> #pragma weak foo__Fv void foo() { printf("Foo called from compilation unit 2\n"); } // TFOO3.CPP #include <stdio.h> void foo() { printf("Foo called from compilation unit 3\n"); } |


CRTSRVPGM TFOO MODULES(TFOO1 TFOO2 TFOO3) EXPORT(*ALL) fails with CPD5D03, Definition supplied multiple times for symbol 'foo__Fv'.

I can get around it with OPTION(*DUPPROC) but then I have to be very careful of the order of my modules in the MODULES keyword of CRTSRVPGM (and even then the order isn't _guaranteed_). That also would hide any cases of unintentional procedure duplication, so I'd really like to get #pragma weak working.


--
This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list
To post a message email: C400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/c400-l
or email: C400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/c400-l.

Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2022 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.