CXX on X86 : missing align_val_t??

Post Reply

Topic author
joukj
Master
Posts: 178
Joined: Thu Aug 27, 2020 5:50 am
Reputation: 0
Status: Offline

CXX on X86 : missing align_val_t??

Post by joukj » Tue Jul 18, 2023 5:41 am

Hi ,
I get the following when linking a c++ program compiled with /standard=gnu17 (which I realy need):

Code: Select all

link pdfdetach.obj,parseargs.obj,[-.poppler]libpoppler.olb/lib,	[]vms_link/opt
%ILINK-W-NUDFSYMS, 2 undefined symbols:
%ILINK-I-UDFSYM, 	_ZdlPvSt11align_val_t 
%ILINK-I-UDFSYM, 	_ZnwmSt11align_val_t 
%ILINK-W-USEUNDEF, undefined symbol _ZdlPvSt11align_val_t referenced
	section: .text._ZNSt3__117_DeallocateCaller9__do_callISt11align_val_tEEv
PvT_
	offset: %X0000000000000028
	module: PDFDETACH 
	file: $DSTM:[JOUKJ.public.poppler.poppler_2023-07-17.poppler.utils]PDFDE
TACH.OBJ;2 
%ILINK-W-USEUNDEF, undefined symbol _ZnwmSt11align_val_t referenced
	section: .text._ZNSt3__117__libcpp_allocateEmm
	offset: %X000000000000004A
	module: PDFDETACH 
	file: $DSTM:[JOUKJ.public.poppler.poppler_2023-07-17.poppler.utils]PDFDE
TACH.OBJ;2 
I can find the 2 missing ones in the compiler executable in sys$system, but nothing in sys$library & sys$share.
Is something missing?


regards
Jouk
I use :
clang version 10.0.1 (git@bitbucket.org:vms_software/llvm-10.0.1.git d469fd71c59
f33c7d998debe420a69abb31f1f57)
Build date: 06-16-2023
Target: x86_64-OpenVMS
Thread model: posix
InstalledDir: RUMBA$DKA100:[SYS0.SYSCOMMON.][SYSEXE]
on OpenVMS x86_64 V9.2-1


jreagan
VSI Expert
Master
Posts: 141
Joined: Tue Dec 01, 2020 8:40 am
Reputation: 0
Status: Offline

Re: CXX on X86 : missing align_val_t??

Post by jreagan » Tue Jul 18, 2023 11:10 am

I haven't seen that. I would need to see a reproducer.

What in C++17 do you need? We have several missing C++17 libraries and classes and I've been saying C++14 only.


Topic author
joukj
Master
Posts: 178
Joined: Thu Aug 27, 2020 5:50 am
Reputation: 0
Status: Offline

Re: CXX on X86 : missing align_val_t??

Post by joukj » Wed Jul 19, 2023 1:26 am

I'm trying to compile the package poppler (extracted from their git repository afew days ago).

with /stan=cxx14 I get:

Code: Select all

rumba-jj) make/force pdfdetach.obj

define goo [-.goo]
define fofi [-.fofi]
define splash [-.splash]
define poppler [-.poppler]
cxx /name=(as_is,short)/stan=cxx14/include=([],[-],[-.poppler],[-.goo])	/define=
(__HAVE_CONFIG=1,VMS=1)/point=64=argv	/warn=(noinfo,disable=("return-type")) p
dfdetach.cc
In file included from $DISK1:[JOUKJ.public.poppler.poppler_2023-07-17.poppler.ut
ils]pdfdetach.cc;1:37:
In file included from [-.POPPLER]PDFDoc.h:61:
In file included from ../poppler/Catalog.h:47:
../poppler/Link.h:90:82: error: no template named 'optional' in namespace 'std'
    static std::unique_ptr<LinkAction> parseAction(const Object *obj, const std:
:optional<std::string> &baseURI = {});
                                                                            ~~~~
~^
../poppler/Link.h:96:82: error: no template named 'optional' in namespace 'std'
    static std::unique_ptr<LinkAction> parseAction(const Object *obj, const std:
:optional<std::string> &baseURI, std::set<int> *seenNextActions);
                                                                            ~~~~
~^
../poppler/Link.h:246:46: error: no template named 'optional' in namespace 'std'
    LinkURI(const Object *uriObj, const std::optional<std::string> &baseURI);
                                        ~~~~~^
In file included from $DISK1:[JOUKJ.public.poppler.poppler_2023-07-17.poppler.ut
ils]pdfdetach.cc;1:37:
In file included from [-.POPPLER]PDFDoc.h:61:
../poppler/Catalog.h:136:16: error: no template named 'optional' in namespace 's
td'
    const std::optional<std::string> &getBaseURI() const { return baseURI; }
          ~~~~~^
../poppler/Catalog.h:292:10: error: no template named 'optional' in namespace 's
td'
    std::optional<std::string> baseURI; // base URI for URI-type links
    ~~~~~^
In file included from $DISK1:[JOUKJ.public.poppler.poppler_2023-07-17.poppler.ut
ils]pdfdetach.cc;1:37:
In file included from [-.POPPLER]PDFDoc.h:65:
../poppler/Form.h:313:197: error: no template named 'optional' in namespace 'std
'
    bool signDocument(const std::string &filename, const std::string &certNickna
me, const std::string &password, const GooString *reason = nullptr, const GooStr
ing *location = nullptr, const std::optional<GooString> &ownerPassword = {},
                                                                                
                                                                                
                               ~~~~~^
../poppler/Form.h:314:34: error: no template named 'optional' in namespace 'std'
                      const std::optional<GooString> &userPassword = {});
                            ~~~~~^
../poppler/Form.h:318:48: error: no template named 'optional' in namespace 'std'
                                    const std::optional<GooString> &ownerPasswor
d = {}, const std::optional<GooString> &userPassword = {}, const GooString &sign
atureText = {}, const GooString &signatureTextLeft = {}, double fontSize = {},
                                          ~~~~~^
../poppler/Form.h:318:100: error: no template named 'optional' in namespace 'std
'
                                    const std::optional<GooString> &ownerPasswor
d = {}, const std::optional<GooString> &userPassword = {}, const GooString &sign
atureText = {}, const GooString &signatureTextLeft = {}, double fontSize = {},
                                                                                
              ~~~~~^
../poppler/Form.h:324:10: error: no template named 'optional' in namespace 'std'
    std::optional<GooString> getCheckedSignature(Goffset *checkedFileSize);
    ~~~~~^
../poppler/Form.h:330:114: error: no template named 'optional' in namespace 'std
'
    bool getObjectStartEnd(const GooString &filename, int objNum, Goffset *objSt
art, Goffset *objEnd, const std::optional<GooString> &ownerPassword, const std::
optional<GooString> &userPassword);
                                                                                
                            ~~~~~^
../poppler/Form.h:330:161: error: no template named 'optional' in namespace 'std
'
    bool getObjectStartEnd(const GooString &filename, int objNum, Goffset *objSt
art, Goffset *objEnd, const std::optional<GooString> &ownerPassword, const std::
optional<GooString> &userPassword);
                                                                                
                                                                           ~~~~~
^
../poppler/Form.h:617:10: error: no template named 'optional' in namespace 'std'
    std::optional<GooString> getCheckedSignature(Goffset *checkedFileSize);
    ~~~~~^
In file included from $DISK1:[JOUKJ.public.poppler.poppler_2023-07-17.poppler.ut
ils]pdfdetach.cc;1:37:
[-.POPPLER]PDFDoc.h:134:72: error: no template named 'optional' in namespace 'st
d'
    explicit PDFDoc(std::unique_ptr<GooString> &&fileNameA, const std::optional<
GooString> &ownerPassword = {}, const std::optional<GooString> &userPassword = {
}, void *guiDataA = nullptr,
                                                                  ~~~~~^
[-.POPPLER]PDFDoc.h:134:124: error: no template named 'optional' in namespace 's
td'
    explicit PDFDoc(std::unique_ptr<GooString> &&fileNameA, const std::optional<
GooString> &ownerPassword = {}, const std::optional<GooString> &userPassword = {
}, void *guiDataA = nullptr,
                                                                                
                                      ~~~~~^
[-.POPPLER]PDFDoc.h:141:50: error: no template named 'optional' in namespace 'st
d'
    explicit PDFDoc(BaseStream *strA, const std::optional<GooString> &ownerPassw
ord = {}, const std::optional<GooString> &userPassword = {}, void *guiDataA = nu
llptr, const std::function<void()> &xrefReconstructedCallback = {});
                                            ~~~~~^
[-.POPPLER]PDFDoc.h:141:102: error: no template named 'optional' in namespace 's
td'
    explicit PDFDoc(BaseStream *strA, const std::optional<GooString> &ownerPassw
ord = {}, const std::optional<GooString> &userPassword = {}, void *guiDataA = nu
llptr, const std::function<void()> &xrefReconstructedCallback = {});
                                                                                
                ~~~~~^
[-.POPPLER]PDFDoc.h:344:133: error: no template named 'optional' in namespace 's
td'
              const GooString *reason = nullptr, const GooString *location = nul
lptr, const std::string &imagePath = "", const std::optional<GooString> &ownerPa
ssword = {}, const std::optional<GooString> &userPassword = {});
                                                                                
                                               ~~~~~^
[-.POPPLER]PDFDoc.h:344:185: error: no template named 'optional' in namespace 's
td'
              const GooString *reason = nullptr, const GooString *location = nul
lptr, const std::string &imagePath = "", const std::optional<GooString> &ownerPa
ssword = {}, const std::optional<GooString> &userPassword = {});
                                                                                
                                                                                
                   ~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
%MMS-F-ABORT, For target pdfdetach.obj, CLI returned abort status: %X15F61262.




with /stan=cxx17 It compiles without errors:


rumba-jj) make/force pdfdetach.obj

define goo [-.goo]
define fofi [-.fofi]
define splash [-.splash]
define poppler [-.poppler]
cxx /name=(as_is,short)/stan=cxx17/include=([],[-],[-.poppler],[-.goo])	/define=
(__HAVE_CONFIG=1,VMS=1)/point=64=argv	/warn=(noinfo,disable=("return-type")) p
dfdetach.cc
rumba-jj) 

regards
Jouk


jreagan
VSI Expert
Master
Posts: 141
Joined: Tue Dec 01, 2020 8:40 am
Reputation: 0
Status: Offline

Re: CXX on X86 : missing align_val_t??

Post by jreagan » Thu Aug 10, 2023 6:37 pm

Just released a new kit that should include align_val_t.


jreagan
VSI Expert
Master
Posts: 141
Joined: Tue Dec 01, 2020 8:40 am
Reputation: 0
Status: Offline

Re: CXX on X86 : missing align_val_t??

Post by jreagan » Mon Aug 14, 2023 8:04 am

The errors with /STANDARD=CXX14 are because ::optional is new to C++17. The errors with CXX14 seem expected (perhaps not very helpful to realize the bad CXX14 vs CXX17 setting)


Topic author
joukj
Master
Posts: 178
Joined: Thu Aug 27, 2020 5:50 am
Reputation: 0
Status: Offline

Re: CXX on X86 : missing align_val_t??

Post by joukj » Mon Sep 04, 2023 10:40 am

confirm: this is fixed in the latest CXX compiler

Post Reply