]> git.saurik.com Git - apple/ld64.git/blobdiff - src/ld/passes/branch_shim.cpp
ld64-134.9.tar.gz
[apple/ld64.git] / src / ld / passes / branch_shim.cpp
index 7a2bd50ea6b2907cf4f7ab59643da7a943e4332e..840a39108a674a21c00092e71ccfdb468432a01d 100644 (file)
@@ -59,8 +59,6 @@ public:
                                 { asprintf((char**)&_name, "%s$shim", target->name()); }
 
        virtual const ld::File*                                 file() const                                    { return NULL; }
-       virtual bool                                                    translationUnitSource(const char** dir, const char**) const 
-                                                                                                                                                       { return false; }
        virtual const char*                                             name() const                                    { return _name; }
        virtual uint64_t                                                size() const                                    { return 12; }
        virtual uint64_t                                                objectAddress() const                   { return 0; }
@@ -100,8 +98,6 @@ public:
                                 { asprintf((char**)&_name, "%s$shim", target->name()); }
 
        virtual const ld::File*                                 file() const                                    { return NULL; }
-       virtual bool                                                    translationUnitSource(const char** dir, const char**) const 
-                                                                                                                                                       { return false; }
        virtual const char*                                             name() const                                    { return _name; }
        virtual uint64_t                                                size() const                                    { return 12; }
        virtual uint64_t                                                objectAddress() const                   { return 0; }
@@ -141,8 +137,6 @@ public:
                                 { asprintf((char**)&_name, "%s$shim", target->name()); }
 
        virtual const ld::File*                                 file() const                                    { return NULL; }
-       virtual bool                                                    translationUnitSource(const char** dir, const char**) const 
-                                                                                                                                                       { return false; }
        virtual const char*                                             name() const                                    { return _name; }
        virtual uint64_t                                                size() const                                    { return 16; }
        virtual uint64_t                                                objectAddress() const                   { return 0; }
@@ -189,8 +183,6 @@ public:
                                 { asprintf((char**)&_name, "%s$shim", target->name()); }
 
        virtual const ld::File*                                 file() const                                    { return NULL; }
-       virtual bool                                                    translationUnitSource(const char** dir, const char**) const 
-                                                                                                                                                       { return false; }
        virtual const char*                                             name() const                                    { return _name; }
        virtual uint64_t                                                size() const                                    { return 16; }
        virtual uint64_t                                                objectAddress() const                   { return 0; }
@@ -229,8 +221,6 @@ public:
                                 { asprintf((char**)&_name, "%s$shim", target->name()); }
 
        virtual const ld::File*                                 file() const                                    { return NULL; }
-       virtual bool                                                    translationUnitSource(const char** dir, const char**) const 
-                                                                                                                                                       { return false; }
        virtual const char*                                             name() const                                    { return _name; }
        virtual uint64_t                                                size() const                                    { return 12; }
        virtual uint64_t                                                objectAddress() const                   { return 0; }
@@ -328,7 +318,7 @@ void doPass(const Options& opts, ld::Internal& state)
                                                                if ( pos == thumbToAtomMap.end() ) {
                                                                        if ( opts.archSupportsThumb2() ) {
                                                                                // <rdar://problem/9116044> make long-branch style shims for arm kexts
-                                                                               if ( makingKextBundle )
+                                                                               if ( makingKextBundle && opts.allowTextRelocs() )
                                                                                        shim = new NoPICThumb2ToArmShimAtom(target, *sect);
                                                                                else
                                                                                        shim = new Thumb2ToArmShimAtom(target, *sect);
@@ -365,7 +355,7 @@ void doPass(const Options& opts, ld::Internal& state)
                                                                std::map<const Atom*, const Atom*>::iterator pos = atomToThumbMap.find(target);
                                                                if ( pos == atomToThumbMap.end() ) {
                                                                        // <rdar://problem/9116044> make long-branch style shims for arm kexts
-                                                                       if ( makingKextBundle )
+                                                                       if ( makingKextBundle && opts.allowTextRelocs() )
                                                                                shim = new NoPICARMtoThumbShimAtom(target, *sect);
                                                                        else
                                                                                shim = new ARMtoThumbShimAtom(target, *sect);