~ubuntu-branches/ubuntu/oneiric/virtualbox-ose/oneiric

« back to all changes in this revision

Viewing changes to src/VBox/Runtime/common/ldr/ldrNative.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2011-01-30 23:27:25 UTC
  • mfrom: (0.3.12 upstream)
  • Revision ID: james.westby@ubuntu.com-20110130232725-2ouajjd2ggdet0zd
Tags: 4.0.2-dfsg-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Add Apport hook.
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Drop *-source packages.
* Drop ubuntu-01-fix-build-gcc45.patch, fixed upstream.
* Drop ubuntu-02-as-needed.patch, added to the Debian package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $Id: ldrNative.cpp $ */
 
1
/* $Id: ldrNative.cpp 35191 2010-12-16 15:25:20Z vboxsync $ */
2
2
/** @file
3
3
 * IPRT - Binary Image Loader, Native interface.
4
4
 */
95
95
 */
96
96
RTDECL(int) RTLdrLoad(const char *pszFilename, PRTLDRMOD phLdrMod)
97
97
{
98
 
    LogFlow(("RTLdrLoad: pszFilename=%p:{%s} phLdrMod=%p\n", pszFilename, pszFilename, phLdrMod));
 
98
    return RTLdrLoadEx(pszFilename, phLdrMod, RTLDRLOAD_FLAGS_LOCAL, NULL);
 
99
}
 
100
RT_EXPORT_SYMBOL(RTLdrLoad);
 
101
 
 
102
 
 
103
RTDECL(int) RTLdrLoadEx(const char *pszFilename, PRTLDRMOD phLdrMod, uint32_t fFlags, PRTERRINFO pErrInfo)
 
104
{
 
105
    LogFlow(("RTLdrLoadEx: pszFilename=%p:{%s} phLdrMod=%p fFlags=%#x pErrInfo=%p\n", pszFilename, pszFilename, phLdrMod, fFlags, pErrInfo));
99
106
 
100
107
    /*
101
 
     * validate input.
 
108
     * Validate and massage the input.
102
109
     */
103
 
    AssertMsgReturn(VALID_PTR(pszFilename), ("pszFilename=%p\n", pszFilename), VERR_INVALID_PARAMETER);
104
 
    AssertMsgReturn(VALID_PTR(phLdrMod), ("phLdrMod=%p\n", phLdrMod), VERR_INVALID_PARAMETER);
 
110
    RTErrInfoClear(pErrInfo);
 
111
    AssertPtrReturn(pszFilename, VERR_INVALID_POINTER);
 
112
    AssertPtrReturn(phLdrMod, VERR_INVALID_POINTER);
 
113
    AssertReturn(!(fFlags & ~RTLDRLOAD_FLAGS_VALID_MASK), VERR_INVALID_PARAMETER);
105
114
 
106
115
    /*
107
116
     * Allocate and initialize module structure.
118
127
        /*
119
128
         * Attempt to open the module.
120
129
         */
121
 
        rc = rtldrNativeLoad(pszFilename, &pMod->hNative);
 
130
        rc = rtldrNativeLoad(pszFilename, &pMod->hNative, fFlags, pErrInfo);
122
131
        if (RT_SUCCESS(rc))
123
132
        {
124
133
            *phLdrMod = &pMod->Core;
125
134
            LogFlow(("RTLdrLoad: returns %Rrc *phLdrMod=%RTldrm\n", rc, *phLdrMod));
126
135
            return rc;
127
136
        }
 
137
 
128
138
        RTMemFree(pMod);
129
139
    }
 
140
    else
 
141
        RTErrInfoSetF(pErrInfo, rc, "Failed to allocate %zu bytes for the module handle", sizeof(*pMod));
130
142
    *phLdrMod = NIL_RTLDRMOD;
131
143
    LogFlow(("RTLdrLoad: returns %Rrc\n", rc));
132
144
    return rc;
133
145
}
134
 
RT_EXPORT_SYMBOL(RTLdrLoad);
 
146
RT_EXPORT_SYMBOL(RTLdrLoadEx);
135
147
 
136
148
 
137
149
/**