Changes in / [7fca832:353aaba]
- Files:
-
- 5 deleted
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/exception.hfa
r7fca832 r353aaba 162 162 // Generate a new type-id value. 163 163 #define _EHM_TYPE_ID_VALUE(exception_name, arguments) \ 164 __attribute__(( cfa_linkonce)) \164 __attribute__(( section(".gnu.linkonce." "__cfatid_" #exception_name) )) \ 165 165 _EHM_TYPE_ID_TYPE(exception_name) arguments const \ 166 166 _EHM_TYPE_ID_NAME(exception_name) = { \ -
src/CodeGen/module.mk
r7fca832 r353aaba 25 25 CodeGen/GenType.cc \ 26 26 CodeGen/GenType.h \ 27 CodeGen/LinkOnce.cc \28 CodeGen/LinkOnce.h \29 27 CodeGen/OperatorTable.cc \ 30 28 CodeGen/OperatorTable.h \ -
src/InitTweak/InitTweak.cc
r7fca832 r353aaba 1216 1216 1217 1217 void addDataSectonAttribute( ObjectDecl * objDecl ) { 1218 objDecl->attributes.push_back(new Attribute("section", { 1219 new ConstantExpr( Constant::from_string(".data#") ), 1220 })); 1218 Type *strLitT = new PointerType( Type::Qualifiers( ), 1219 new BasicType( Type::Qualifiers( ), BasicType::Char ) ); 1220 std::list< Expression * > attr_params; 1221 attr_params.push_back( 1222 new ConstantExpr( Constant( strLitT, "\".data#\"", std::nullopt ) ) ); 1223 objDecl->attributes.push_back(new Attribute("section", attr_params)); 1221 1224 } 1222 1225 1223 1226 void addDataSectionAttribute( ast::ObjectDecl * objDecl ) { 1224 objDecl->attributes.push_back(new ast::Attribute("section", { 1225 ast::ConstantExpr::from_string(objDecl->location, ".data#"), 1226 })); 1227 auto strLitT = new ast::PointerType(new ast::BasicType(ast::BasicType::Char)); 1228 objDecl->attributes.push_back(new ast::Attribute("section", {new ast::ConstantExpr(objDecl->location, strLitT, "\".data#\"", std::nullopt)})); 1227 1229 } 1228 1230 -
src/Virtual/Tables.cc
r7fca832 r353aaba 172 172 } 173 173 174 Attribute * linkonce( const std::string & subsection ) { 175 const std::string section = ".gnu.linkonce." + subsection; 176 return new Attribute( "section", { 177 new ConstantExpr( Constant::from_string( section ) ), 178 } ); 179 } 180 174 181 ObjectDecl * makeTypeIdInstance( StructInstType const * typeIdType ) { 175 182 assert( typeIdType ); … … 186 193 new AddressExpr( new NameExpr( "__cfatid_exception_t" ) ) 187 194 ) } ), 188 { new Attribute( "cfa_linkonce", {}) },195 { linkonce( typeid_name ) }, 189 196 noFuncSpecifiers 190 197 ); -
src/main.cc
r7fca832 r353aaba 37 37 #include "CodeGen/FixNames.h" // for fixNames 38 38 #include "CodeGen/Generate.h" // for generate 39 #include "CodeGen/LinkOnce.h" // for translateLinkOnce40 39 #include "CodeTools/DeclStats.h" // for printDeclStats 41 40 #include "CodeTools/ResolvProtoDump.h" // for dumpAsResolvProto … … 406 405 PASS( "Box", GenPoly::box( translationUnit ) ); 407 406 408 PASS( "Link-Once", CodeGen::translateLinkOnce( translationUnit ) );409 410 // Code has been lowered to C, now we can start generation.411 412 407 if ( bcodegenp ) { 413 408 dump( translationUnit ); -
tests/Makefile.am
r7fca832 r353aaba 67 67 .PHONY: list .validate 68 68 .INTERMEDIATE: .validate .validate.cfa 69 EXTRA_PROGRAMS = avl_test linkonce.dummy_hack # build but do not install69 EXTRA_PROGRAMS = avl_test .dummy_hack # build but do not install 70 70 EXTRA_DIST = test.py \ 71 71 pybin/__init__.py \ … … 94 94 95 95 avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa 96 linkonce_SOURCES = link-once/main.cfa link-once/partner.cfa97 96 # automake doesn't know we still need C/CPP rules so pretend like we have a C program 98 97 nodist__dummy_hack_SOURCES = .dummy_hack.c .dummy_hackxx.cpp
Note: See TracChangeset
for help on using the changeset viewer.